home *** CD-ROM | disk | FTP | other *** search
- /*$T api_functions.c GC 1.137 08/09/02 17:47:18 */
-
- /*$6
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- */
-
- #include "zgl.h"
- #include <stdio.h>
-
- /* glVertex */
- void GLAPIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
- GLParam p[5];
- /*~~~~~~~~~*/
-
- p[0].op = OP_Vertex;
- p[1].f = x;
- p[2].f = y;
- p[3].f = z;
- p[4].f = w;
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glVertex2f(GLfloat x, GLfloat y) {
- glVertex4f(x, y, 0, 1);
- }
-
- /* */
- void GLAPIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z) {
- glVertex4f(x, y, z, 1);
- }
-
- /* */
- void GLAPIENTRY glVertex3fv(const GLfloat *v) {
- glVertex4f(v[0], v[1], v[2], 1);
- }
-
- /* glNormal */
- void GLAPIENTRY glNormal3f(GLfloat x, GLfloat y, GLfloat z) {
- GLParam p[4];
- /*~~~~~~~~~*/
-
- p[0].op = OP_Normal;
- p[1].f = x;
- p[2].f = y;
- p[3].f = z;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glNormal3fv(const GLfloat *v) {
- glNormal3f(v[0], v[1], v[2]);
- }
-
- /* glColor */
- void GLAPIENTRY glColor4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a) {
- GLParam p[8];
- /*~~~~~~~~~*/
-
- p[0].op = OP_Color;
- p[1].f = r;
- p[2].f = g;
- p[3].f = b;
- p[4].f = a;
-
- /* direct convertion to integer to go faster if no shading */
- p[5].ui = (unsigned int) (r * (ZB_POINT_RED_MAX - ZB_POINT_RED_MIN) + ZB_POINT_RED_MIN);
- p[6].ui = (unsigned int) (g * (ZB_POINT_GREEN_MAX - ZB_POINT_GREEN_MIN) + ZB_POINT_GREEN_MIN);
- p[7].ui = (unsigned int) (b * (ZB_POINT_BLUE_MAX - ZB_POINT_BLUE_MIN) + ZB_POINT_BLUE_MIN);
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glColor4fv(const GLfloat *v) {
- GLParam p[8];
- /*~~~~~~~~~*/
-
- p[0].op = OP_Color;
- p[1].f = v[0];
- p[2].f = v[1];
- p[3].f = v[2];
- p[4].f = v[3];
-
- /* direct convertion to integer to go faster if no shading */
- p[5].ui = (unsigned int) (v[0] * (ZB_POINT_RED_MAX - ZB_POINT_RED_MIN) + ZB_POINT_RED_MIN);
- p[6].ui = (unsigned int) (v[1] * (ZB_POINT_GREEN_MAX - ZB_POINT_GREEN_MIN) + ZB_POINT_GREEN_MIN);
- p[7].ui = (unsigned int) (v[2] * (ZB_POINT_BLUE_MAX - ZB_POINT_BLUE_MIN) + ZB_POINT_BLUE_MIN);
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glColor3f(GLfloat x, GLfloat y, GLfloat z) {
- glColor4f(x, y, z, 1);
- }
-
- /* */
- void GLAPIENTRY glColor3fv(const GLfloat *v) {
- glColor4f(v[0], v[1], v[2], 1);
- }
-
- /* TexCoord */
- void GLAPIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
- GLParam p[5];
- /*~~~~~~~~~*/
-
- p[0].op = OP_TexCoord;
- p[1].f = s;
- p[2].f = t;
- p[3].f = r;
- p[4].f = q;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glTexCoord2f(GLfloat s, GLfloat t) {
- glTexCoord4f(s, t, 0, 1);
- }
-
- /* */
- void GLAPIENTRY glTexCoord2fv(const GLfloat *v) {
- glTexCoord4f(v[0], v[1], 0, 1);
- }
-
- /* */
- void GLAPIENTRY glEdgeFlag(GLboolean flag) {
- GLParam p[2];
- /*~~~~~~~~~*/
-
- p[0].op = OP_EdgeFlag;
- p[1].i = flag;
- gl_add_op(p);
- }
-
- /* misc */
- void GLAPIENTRY glShadeModel(GLenum mode) {
- GLParam p[2];
- /*~~~~~~~~~*/
-
- assert(mode == GL_FLAT || mode == GL_SMOOTH);
- p[0].op = OP_ShadeModel;
- p[1].i = mode;
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glCullFace(GLenum mode) {
- GLParam p[2];
- /*~~~~~~~~~*/
-
- assert(mode == GL_BACK || mode == GL_FRONT || mode == GL_FRONT_AND_BACK);
- p[0].op = OP_CullFace;
- p[1].i = mode;
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glFrontFace(GLenum mode) {
- GLParam p[2];
- /*~~~~~~~~~*/
-
- assert(mode == GL_CCW || mode == GL_CW);
- mode = (mode != GL_CCW);
- p[0].op = OP_FrontFace;
- p[1].i = mode;
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glPolygonMode(GLenum face, GLenum mode) {
- GLParam p[3];
- /*~~~~~~~~~*/
-
- assert(face == GL_BACK || face == GL_FRONT || face == GL_FRONT_AND_BACK);
- assert(mode == GL_POINT || mode == GL_LINE || mode == GL_FILL);
-
- p[0].op = OP_PolygonMode;
- p[1].i = face;
- p[2].i = mode;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor) {
- GLParam p[3];
- /*~~~~~~~~~*/
-
- p[0].op = OP_BlendFunc;
- p[1].i = sfactor;
- p[2].i = dfactor;
-
- gl_add_op(p);
- }
-
- /* glEnable / glDisable */
- void GLAPIENTRY glEnable(GLenum cap) {
- GLParam p[3];
- /*~~~~~~~~~*/
-
- p[0].op = OP_EnableDisable;
- p[1].i = cap;
- p[2].i = 1;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glDisable(GLenum cap) {
- GLParam p[3];
- /*~~~~~~~~~*/
-
- p[0].op = OP_EnableDisable;
- p[1].i = cap;
- p[2].i = 0;
-
- gl_add_op(p);
- }
-
- /* glBegin / glEnd */
- void GLAPIENTRY glBegin(GLenum mode) {
- GLParam p[2];
- /*~~~~~~~~~*/
-
- p[0].op = OP_Begin;
- p[1].i = mode;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glEnd(void) {
- GLParam p[1];
- /*~~~~~~~~~*/
-
- p[0].op = OP_End;
-
- gl_add_op(p);
- }
-
- /* matrix */
- void GLAPIENTRY glMatrixMode(GLenum mode) {
- GLParam p[2];
- /*~~~~~~~~~*/
-
- p[0].op = OP_MatrixMode;
- p[1].i = mode;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glLoadMatrixf(const GLfloat *m) {
- GLParam p[17];
- int i;
- /*~~~~~~~~~~*/
-
- p[0].op = OP_LoadMatrix;
- for(i = 0; i < 16; i++) {
- p[i + 1].f = m[i];
- }
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glLoadIdentity(void) {
- GLParam p[1];
-
- p[0].op = OP_LoadIdentity;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glMultMatrixf(const GLfloat *m) {
- GLParam p[17];
- int i;
-
- p[0].op = OP_MultMatrix;
- for(i = 0; i < 16; i++) {
- p[i + 1].f = m[i];
- }
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glPushMatrix(void) {
- GLParam p[1];
-
- p[0].op = OP_PushMatrix;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glPopMatrix(void) {
- GLParam p[1];
-
- p[0].op = OP_PopMatrix;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {
- GLParam p[5];
-
- p[0].op = OP_Rotate;
- p[1].f = angle;
- p[2].f = x;
- p[3].f = y;
- p[4].f = z;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z) {
- GLParam p[4];
-
- p[0].op = OP_Translate;
- p[1].f = x;
- p[2].f = y;
- p[3].f = z;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z) {
- GLParam p[4];
-
- p[0].op = OP_Scale;
- p[1].f = x;
- p[2].f = y;
- p[3].f = z;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height) {
- GLParam p[5];
-
- p[0].op = OP_Viewport;
- p[1].i = x;
- p[2].i = y;
- p[3].i = width;
- p[4].i = height;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near,
- GLdouble farv) {
- GLParam p[7];
-
- p[0].op = OP_Frustum;
- p[1].f = left;
- p[2].f = right;
- p[3].f = bottom;
- p[4].f = top;
- p[5].f = near;
- p[6].f = farv;
-
- gl_add_op(p);
- }
-
- /* lightening */
- void GLAPIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) {
- GLParam p[7];
- int i, n;
-
- assert(face == GL_FRONT || face == GL_BACK || face == GL_FRONT_AND_BACK);
-
- p[0].op = OP_Material;
- p[1].i = face;
- p[2].i = pname;
- n = 4;
- if(pname == GL_SHININESS) {
- n = 1;
- }
-
- for(i = 0; i < 4; i++) {
- p[3 + i].f = params[i];
- }
-
- for(i = n; i < 4; i++) {
- p[3 + i].f = 0;
- }
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glMaterialf(GLenum face, GLenum pname, GLfloat param) {
- GLParam p[7];
- int i;
-
- p[0].op = OP_Material;
- p[1].i = face;
- p[2].i = pname;
- p[3].f = param;
- for(i = 0; i < 3; i++) {
- p[4 + i].f = 0;
- }
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glColorMaterial(GLenum face, GLenum mode) {
- GLParam p[3];
-
- p[0].op = OP_ColorMaterial;
- p[1].i = face;
- p[2].i = mode;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *params) {
- GLParam p[7];
- int i;
-
- p[0].op = OP_Light;
- p[1].i = light;
- p[2].i = pname;
-
- /* TODO: 3 composants ? */
- for(i = 0; i < 4; i++) {
- p[3 + i].f = params[i];
- }
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glLightf(GLenum light, GLenum pname, GLfloat param) {
- GLParam p[7];
- int i;
-
- p[0].op = OP_Light;
- p[1].i = light;
- p[2].i = pname;
- p[3].f = param;
- for(i = 0; i < 3; i++) {
- p[4 + i].f = 0;
- }
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glLightModeli(GLenum pname, GLint param) {
- GLParam p[6];
- int i;
-
- p[0].op = OP_LightModel;
- p[1].i = pname;
- p[2].f = (GLfloat) param;
- for(i = 0; i < 4; i++) {
- p[3 + i].f = 0;
- }
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glLightModelfv(GLenum pname, const GLfloat *params) {
- GLParam p[6];
- int i;
-
- p[0].op = OP_LightModel;
- p[1].i = pname;
- for(i = 0; i < 4; i++) {
- p[2 + i].f = params[i];
- }
-
- gl_add_op(p);
- }
-
- /* clear */
- void GLAPIENTRY glClear(GLbitfield mask) {
- GLParam p[2];
-
- p[0].op = OP_Clear;
- p[1].i = mask;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a) {
- GLParam p[5];
-
- p[0].op = OP_ClearColor;
- p[1].f = r;
- p[2].f = g;
- p[3].f = b;
- p[4].f = a;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glClearDepth(GLdouble depth) {
- GLParam p[2];
-
- p[0].op = OP_ClearDepth;
- p[1].f = depth;
-
- gl_add_op(p);
- }
-
- /* textures */
- void GLAPIENTRY glTexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width,
- GLsizei height, GLint border, GLenum format, GLenum type,
- const GLvoid *pixels) {
- GLParam p[10];
-
- p[0].op = OP_TexImage2D;
- p[1].i = target;
- p[2].i = level;
- p[3].i = internalFormat;
- p[4].i = width;
- p[5].i = height;
- p[6].i = border;
- p[7].i = format;
- p[8].i = type;
- p[9].p = (GLvoid *) pixels;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glBindTexture(GLenum target, GLuint texture) {
- GLParam p[3];
-
- p[0].op = OP_BindTexture;
- p[1].i = target;
- p[2].i = texture;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param) {
- GLParam p[8];
-
- p[0].op = OP_TexEnv;
- p[1].i = target;
- p[2].i = pname;
- p[3].i = param;
- p[4].f = 0;
- p[5].f = 0;
- p[6].f = 0;
- p[7].f = 0;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param) {
- GLParam p[8];
-
- p[0].op = OP_TexParameter;
- p[1].i = target;
- p[2].i = pname;
- p[3].i = param;
- p[4].f = 0;
- p[5].f = 0;
- p[6].f = 0;
- p[7].f = 0;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glPixelStorei(GLenum pname, GLint param) {
- GLParam p[3];
-
- p[0].op = OP_PixelStore;
- p[1].i = pname;
- p[2].i = param;
-
- gl_add_op(p);
- }
-
- /* selection */
- void GLAPIENTRY glInitNames(void) {
- GLParam p[1];
-
- p[0].op = OP_InitNames;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glPushName(GLuint name) {
- GLParam p[2];
-
- p[0].op = OP_PushName;
- p[1].i = name;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glPopName(void) {
- GLParam p[1];
-
- p[0].op = OP_PopName;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glLoadName(GLuint name) {
- GLParam p[2];
-
- p[0].op = OP_LoadName;
- p[1].i = name;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glPolygonOffset(GLfloat factor, GLfloat units) {
- GLParam p[3];
- p[0].op = OP_PolygonOffset;
- p[1].f = factor;
- p[2].f = units;
- }
-
- /* Special Functions */
- void GLAPIENTRY glCallList(GLuint list) {
- GLParam p[2];
-
- p[0].op = OP_CallList;
- p[1].i = list;
-
- gl_add_op(p);
- }
-
- /* */
- void GLAPIENTRY glFlush(void) {
- /* nothing to do */
- }
-
- /* */
- void GLAPIENTRY glHint(GLenum target, GLenum mode) {
- GLParam p[3];
-
- p[0].op = OP_Hint;
- p[1].i = target;
- p[2].i = mode;
-
- gl_add_op(p);
- }
-
- /* Non standard functions */
- void glDebug(int mode) {
- GLContext *c = gl_get_context();
- c->print_flag = mode;
- }
-